//
//  CZTabBar.swift
//  CZVVeiboPre27
//
//  Created by 范英强 on 16/4/15.
//  Copyright © 2016年 范英强. All rights reserved.
//

import UIKit
// 声明一个协议方法 需继承基协议
protocol CZTabBarDelegate:NSObjectProtocol{
    func composeButtonClick()
}

class CZTabBar: UITabBar {
    
    // 声明一个代理 需要弱引用 防止循环引用
    weak var czDelegate: CZTabBarDelegate?

    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    
    // required 必须的 
    // 如果其他程序员通过xib 或者sb 使用我们的view 的时候 但是我们的view不支持xib 或者sb 那么会走该方法 告知其他程序员（必须实现 要不报错）
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    // MARK: - 监听事件
    func composeButtonClick(){
        czDelegate?.composeButtonClick()
    }
    
    // MARK: - 设置控件
    func setupUI(){
        addSubview(composeButton)
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
        // 设置composeButton 的center
        composeButton.center.x = self.frame.width * 0.5
        composeButton.center.y = self.frame.height * 0.5
        // 设置UITabBarButton宽度
        let width = UIScreen.mainScreen().bounds.width / 5
        // 位置标识记录
        var index: CGFloat = 0
        
        // 遍历更改UITabBarButton 位置
        for value in self.subviews{
            
            // 当是UITabBarButton
            
            if value.isKindOfClass(NSClassFromString("UITabBarButton")!){

                // 设置UITabBarButton
                value.frame.origin.x = index * width
                value.frame.size.width = width
                
                index++
                // 你难道忘记了中间的撰写按钮了么
                if index == 2{
                    index++
                }
                
            }
        }
    }
    
    
    // MARK: - 懒加载控件
    lazy var composeButton: UIButton = {
        let button = UIButton()
        button.addTarget(self, action: "composeButtonClick", forControlEvents: UIControlEvents.TouchUpInside)
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: UIControlState.Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: UIControlState.Highlighted)
        
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: UIControlState.Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: UIControlState.Highlighted)
        button.sizeToFit()
        return button
    }()

}
